package com.shujia.mr.hw.home1;

import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;

import java.io.IOException;

/**
 * 需求：
 *      读取学生基本信息以及学生各科成绩数据，对学生信息和总分关联并过滤出总分大于450同学，
 *          并且输出的学生对象要求包含各科成绩和科目ID
 *
 * Map阶段：
 *      1.读取基本信息以及学生各科成绩数据
 *      2.对数据进行切分，之后再获取学生ID作为Key，其他信息作为Value写出到Reduce端
 *
 * Reduce阶段：
 *      1.接收Map端传入的数据
 *      2.Key对应为学生ID Value有两类数据：1.学生基本信息  2.学生各科成绩
 *      3.对Value数据进行处理
 *
 */
public class Home1Mapper extends Mapper<LongWritable, Text,Text,Text> {
    @Override
    protected void map(LongWritable key, Text value, Mapper<LongWritable, Text, Text, Text>.Context context) throws IOException, InterruptedException {
        String oneLine = value.toString();

        String[] columns = oneLine.split(",");
        if(columns.length == 3){
            // 长度为3 是学生各科成绩
            /**
             * Value:
             * 1000001,98
             * 1000002,5
             * 1000003,137
             * 1000004,29
             * 1000005,85
             * 1000006,52
             */
            context.write(new Text(columns[0]),new Text(columns[1]+","+columns[2]));
        }else {
            // 其他为学生基本信息  write(1500100001,(施笑槐,22,女,文科六班))
            context.write(new Text(columns[0]),new Text(columns[1]+","+columns[2]+","+columns[3]+","+columns[4]));
        }


    }
}
